home *** CD-ROM | disk | FTP | other *** search
- /*
- * File get/put processing.
- *
- * This is the way the client side gets started - either the user
- * wants to get a file (generates a RRQ command to the server)
- * or the user wants to put a file (generates a WRQ command to the
- * server). Once either the RRQ or the WRQ command is sent,
- * the finite state machine takes over the transmission.
- */
-
- #include "defs.h"
-
- /*
- * Execute a get command - read a remote file and store on the local system.
- */
-
- do_get(remfname, locfname)
- char *remfname;
- char *locfname;
- {
- if ( (localfp = file_open(locfname, "w", 1)) == NULL) {
- err_ret("can't fopen %s for writing", locfname);
- return;
- }
-
- if (net_open(hostname, TFTP_SERVICE, port) < 0)
- return;
-
- totnbytes = 0;
- t_start(); /* start timer for statistics */
-
- send_RQ(OP_RRQ, remfname, modetype);
-
- fsm_loop(OP_RRQ);
-
- t_stop(); /* stop timer for statistics */
-
- net_close();
-
- file_close(localfp);
-
- printf("Received %ld bytes in %.1f seconds\n", totnbytes, t_getrtime());
- /* print stastics */
- }
-
- /*
- * Execute a put command - send a local file to the remote system.
- */
-
- do_put(remfname, locfname)
- char *remfname;
- char *locfname;
- {
- if ( (localfp = file_open(locfname, "r", 0)) == NULL) {
- err_ret("can't fopen %s for reading", locfname);
- return;
- }
-
- if (net_open(hostname, TFTP_SERVICE, port) < 0)
- return;
-
- totnbytes = 0;
- t_start(); /* start timer for statistics */
-
- lastsend = MAXDATA;
- send_RQ(OP_WRQ, remfname, modetype);
-
- fsm_loop(OP_WRQ);
-
- t_stop(); /* stop timer for statistics */
-
- net_close();
-
- file_close(localfp);
-
- printf("Sent %ld bytes in %.1f seconds\n", totnbytes, t_getrtime());
- /* print stastics */
- }
-